package com.cskaoyan.javase.oop2._1extends._5protected._1aother;

import com.cskaoyan.javase.oop2._1extends._5protected._0one.CurrentClazz;
import com.cskaoyan.javase.oop2._1extends._5protected._0one.SamePackageSonClazz;

/**
 * 不同包下的子类是可以访问父类中的protected成员的
 * 但是访问的方式有几种呢?
 *      1.创建父类对象,访问该protected成员
 *          不行,在不同包下的子类中,不能访问父类对象中的protected成员
 *
 *      2.创建子类自身对象,访问子类继承自父类的protected成员
 *          可以访问,在不同包下的子类中,可以创建子类自身对象,访问子类继承自父类的protected成员
 *
 *      3.创建"兄弟姐妹"对象,访问它们从父类继承过来的protected成员
 *          不能访问
 *
 *  总结:
 *          protected成员在不同包下,必须在子类中创建子类自身对象,才能够访问从父类中继承过来的受保护成员.其余方式都不行
 *
 * @since 11:20
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class SonClazz extends CurrentClazz {
    public static void main(String[] args) {
        // 1.创建父类对象,访问该protected成员
        CurrentClazz cc = new CurrentClazz();
        // 'a' has protected access in 'com.cskaoyan.javase.oop2._1extends._5protected._0one.CurrentClazz'
        // System.out.println(cc.a);

        // 2.创建子类自身对象,访问子类继承自父类的protected成员
        SonClazz sc = new SonClazz();
        System.out.println(sc.a);

        // 3.创建"兄弟姐妹"对象,访问它们从父类继承过来的protected成员
        SamePackageSonClazz spsc = new SamePackageSonClazz();
        // System.out.println(spsc.a);

    }
}
